home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 4 / QRZ Ham Radio Callsign Database - Volume 4.iso / files / tcpip / amiga / asrc29p.lha / socket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-29  |  5.0 KB  |  176 lines

  1. #ifndef    SOCK_STREAM
  2.  
  3. #include "global.h"
  4.  
  5. /* Local IP wildcard address */
  6. #define    INADDR_ANY    0x0L
  7.  
  8. /* IP protocol numbers */
  9. #define    IPPROTO_ICMP    1
  10. #define    IPPROTO_TCP    6
  11. #define    IPPROTO_UDP    17
  12.  
  13. /* TCP port numbers */
  14. #define    IPPORT_ECHO    7    /* Echo data port */
  15. #define    IPPORT_DISCARD    9    /* Discard data port */
  16. #define    IPPORT_FTPD    20    /* FTP Data port */
  17. #define    IPPORT_FTP    21    /* FTP Control port */
  18. #define IPPORT_TELNET    23    /* Telnet port */
  19. #define IPPORT_SMTP    25    /* Mail port */
  20. #define    IPPORT_FINGER    79    /* Finger port */
  21. #define    IPPORT_TTYLINK    87    /* Chat port */
  22. #define    IPPORT_POP2    109    /* Pop port */
  23. #define    IPPORT_POP3    110    /* Pop port */
  24. #define IPPORT_NNTP    119    /* News port */
  25. #define    IPPORT_RLOGIN    513    /* Remote login */
  26. #define IPPORT_CHATNODE    3600    /* Chatnode port */
  27.  
  28. /* UDP port numbers */
  29. #define    IPPORT_DOMAIN    53
  30. #define    IPPORT_RWHO    513
  31. #define    IPPORT_RIP    520
  32. #define    IPPORT_REMOTE    1234    /* Pulled out of the air */
  33.  
  34. #define    AF_INET        0
  35. #define    AF_AX25        1
  36. #define AF_NETROM    2
  37. #define    AF_LOCAL    3
  38.  
  39. #define    SOCK_STREAM    0
  40. #define    SOCK_DGRAM    1
  41. #define    SOCK_RAW    2
  42. #define SOCK_SEQPACKET    3
  43.  
  44. /* Socket flag values - controls newline mapping */
  45. #define    SOCK_BINARY    0    /* socket in raw (binary) mode */
  46. #define    SOCK_ASCII    1    /* socket in cooked (newline mapping) mode */
  47. #define    SOCK_QUERY    2    /* Return setting without change */
  48.  
  49. #define    EMFILE    1
  50. #define    EBADF    2
  51. #define    EINVAL    3
  52. #define    ESOCKTNOSUPPORT    4
  53. #define    EAFNOSUPPORT    5
  54. #define    EOPNOTSUPP    6
  55. #define    EFAULT        7
  56. #define    ENOTCONN    8
  57. #define    ECONNREFUSED    9
  58. #define EAFNOSUPP    10
  59. #define    EISCONN        11
  60. #define    EWOULDBLOCK    12
  61. #define    EINTR        13
  62. #define    EADDRINUSE    14
  63. #define    ENOMEM        15
  64. #define EMSGSIZE    16
  65. #define    EALARM        17
  66. #define    EABORT        18
  67.  
  68. extern int Console;    /* Console socket number */
  69.  
  70. /* Berkeley format socket address structures. These things were rather
  71.  * poorly thought out, but compatibility is important (or so they say).
  72.  * Note that all the sockaddr variants must be of the same size, 16 bytes
  73.  * to be specific. Although attempts have been made to account for alignment
  74.  * requirements (notably in sockaddr_ax), porters should check each
  75.  * structure.
  76.  */
  77.  
  78. /* Generic socket address structure */
  79. struct sockaddr {
  80.     short sa_family;
  81.     char sa_data[14];
  82. };
  83.  
  84. /* This is a structure for "historical" reasons (whatever they are) */
  85. struct in_addr {
  86.     unsigned long s_addr;
  87. };
  88.  
  89. /* Socket address, DARPA Internet style */
  90. struct sockaddr_in {
  91.     short sin_family;
  92.     unsigned short sin_port;
  93.     struct in_addr sin_addr;
  94.     char sin_zero[8];
  95. };
  96.  
  97. /* AX.25 sockaddr stuff */
  98. #define    AXALEN        7
  99.  
  100. /* Number of chars in interface field. The involved definition takes possible
  101.  * alignment requirements into account, since ax25_addr is of an odd size.
  102.  */
  103. #define    ILEN    (sizeof(struct sockaddr) - sizeof(short) - AXALEN)
  104.  
  105. /* Socket address, AX.25 style */
  106. struct sockaddr_ax {
  107.     short sax_family;        /* 2 bytes */
  108.     char ax25_addr[AXALEN];
  109.     char iface[ILEN];        /* Interface name */
  110. };
  111.  
  112. /* Netrom socket address. */
  113. #ifndef NR4MAXCIRC
  114. struct nr4_addr {
  115.     char user[AXALEN];
  116.     char node[AXALEN];
  117. };
  118. #endif
  119.  
  120. struct sockaddr_nr {
  121.     short nr_family;
  122.     struct nr4_addr nr_addr;
  123. };
  124.  
  125. #define    SOCKSIZE    (sizeof(struct sockaddr))
  126. #define MAXSOCKSIZE    SOCKSIZE /* All sockets are of the same size for now */
  127.  
  128. extern int32 Ip_addr;
  129. /* In socket.c: */
  130. int accept __ARGS((int s,char *peername,int *peernamelen));
  131. int bind __ARGS((int s,char *name,int namelen));
  132. int close_s __ARGS((int s));
  133. int connect __ARGS((int s,char *peername,int peernamelen));
  134. void freesock __ARGS((struct proc *pp));
  135. int getpeername __ARGS((int s,char *peername,int *peernamelen));
  136. int getsockname __ARGS((int s,char *name,int *namelen));
  137. int listen __ARGS((int s,int backlog));
  138. int recv_mbuf __ARGS((int s,struct mbuf **bpp,int flags,char *from,int *fromlen));
  139. int send_mbuf __ARGS((int s,struct mbuf *bp,int flags,char *to,int tolen));
  140. int setflush __ARGS((int s,int c));
  141. int shutdown __ARGS((int s,int how));
  142. int socket __ARGS((int af,int type,int protocol));
  143. void sockinit __ARGS((void));
  144. int sockkick __ARGS((int s));
  145. int socklen __ARGS((int s,int rtx));
  146. struct proc *sockowner __ARGS((int s,struct proc *newowner));
  147. int usesock __ARGS((int s));
  148.  
  149. /* In sockuser.c: */
  150. void flushsocks __ARGS((void));
  151. int keywait __ARGS((char *prompt,int flush));
  152. int recv __ARGS((int s,char *buf,int len,int flags));
  153. int recvchar __ARGS((int s));
  154. int recvfrom __ARGS((int s,char *buf,int len,int flags,char *from,int *fromlen));
  155. int recvline __ARGS((int s,char *buf,unsigned len));
  156. int send __ARGS((int s,char *buf,int len,int flags));
  157. int sendto __ARGS((int s,char *buf,int len,int flags,char *to,int tolen));
  158. int seteol __ARGS((int s,char *seq));
  159. void tflush __ARGS((void));
  160. int tprintf __ARGS((char *fmt,...));
  161. int tputc __ARGS((char c));
  162. int tputs __ARGS((char *s));
  163. void usflush __ARGS((int s));
  164. int usprintf __ARGS((int s,char *fmt,...));
  165. int usputc __ARGS((int s,char c));
  166. int usputs __ARGS((int s,char *x));
  167. int usvprintf __ARGS((int s,char *fmt, va_list args));
  168.  
  169. /* In file sockutil.c: */
  170. struct usock *itop __ARGS((int s));
  171. char *psocket __ARGS((void *p));
  172. char *sockerr __ARGS((int s));
  173. char *sockstate __ARGS((int s));
  174.  
  175. #endif    /* SOCK_STREAM */
  176.